import router from '@/router'
import { ElMessageBox, } from 'element-plus'
import { login, logout, getInfo } from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { isHttp, isEmpty } from "@/utils/validate"
import defAva from '@/assets/images/profile.jpg'

const useUserStore = defineStore(
  'user',
  {
    state: () => ({
      token: getToken(),
      id: '',
      name: '',
      nickName: '',
      avatar: '',
      roles: [],
      permissions: []
    }),
    actions: {
      // 登录
      login(userInfo) {
        const username = userInfo.username.trim()
        const password = userInfo.password
        const code = userInfo.code
        const uuid = userInfo.uuid
        return new Promise((resolve, reject) => {
          const res = {
            "msg": "操作成功",
            "code": 200,
            "token": "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImI3NzEwNTFiLTNjNTktNDY5ZS04NDQyLWZkZTZhZmU1MDhjNSJ9.vZlralCd86sxZRtIL2_H--e5o-xY-7DvcygW06DN_aM3GjV9RsFYpAVIn203hjXUNiFvpmUnOaEfmsG1Lbf48g"
          }
          setToken(res.token)
          this.token = res.token
          resolve()
          // login(username, password, code, uuid).then(res => {
          //   setToken(res.token)
          //   this.token = res.token
          //   resolve()
          // }).catch(error => {
          //   reject(error)
          // })
        })
      },
      // 获取用户信息
      getInfo() {
        return new Promise((resolve, reject) => {
          const res = {
            "msg": "操作成功",
            "code": 200,
            "permissions": [
              "*:*:*"
            ],
            "roles": [
              "admin"
            ],
            "isDefaultModifyPwd": false,
            "isPasswordExpired": false,
            "user": {
              "createBy": "admin",
              "createTime": "2025-05-26 10:07:46",
              "updateBy": null,
              "updateTime": null,
              "remark": "管理员",
              "userId": 1,
              "deptId": 103,
              "userName": "admin",
              "nickName": "讯和",
              "email": "xh@163.com",
              "phonenumber": "15888888888",
              "sex": "1",
              "avatar": "",
              "password": "$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2",
              "status": "0",
              "delFlag": "0",
              "loginIp": "111.202.148.131",
              "loginDate": "2025-06-10T21:24:19.000+08:00",
              "pwdUpdateDate": "2025-05-26T10:07:46.000+08:00",
              "dept": {
                "createBy": null,
                "createTime": null,
                "updateBy": null,
                "updateTime": null,
                "remark": null,
                "deptId": 103,
                "parentId": 101,
                "ancestors": "0,100,101",
                "deptName": "研发部门",
                "orderNum": 1,
                "leader": "讯和",
                "phone": null,
                "email": null,
                "status": "0",
                "delFlag": null,
                "parentName": null,
                "children": []
              },
              "roles": [
                {
                  "createBy": null,
                  "createTime": null,
                  "updateBy": null,
                  "updateTime": null,
                  "remark": null,
                  "roleId": 1,
                  "roleName": "超级管理员",
                  "roleKey": "admin",
                  "roleSort": 1,
                  "dataScope": "1",
                  "menuCheckStrictly": false,
                  "deptCheckStrictly": false,
                  "status": "0",
                  "delFlag": null,
                  "flag": false,
                  "menuIds": null,
                  "deptIds": null,
                  "permissions": null,
                  "admin": true
                }
              ],
              "roleIds": null,
              "postIds": null,
              "roleId": null,
              "admin": true
            }
          }
          const user = res.user
          let avatar = user.avatar || ""
          if (!isHttp(avatar)) {
            avatar = (isEmpty(avatar)) ? defAva : import.meta.env.VITE_APP_BASE_API + avatar
          }
          if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
            this.roles = res.roles
            this.permissions = res.permissions
          } else {
            this.roles = ['ROLE_DEFAULT']
          }
          this.id = user.userId
          this.name = user.userName
          this.nickName = user.nickName
          this.avatar = avatar
          /* 初始密码提示 */
          if (res.isDefaultModifyPwd) {
            ElMessageBox.confirm('您的密码还是初始密码，请修改密码！', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => {
              router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } })
            }).catch(() => { })
          }
          /* 过期密码提示 */
          if (!res.isDefaultModifyPwd && res.isPasswordExpired) {
            ElMessageBox.confirm('您的密码已过期，请尽快修改密码！', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => {
              router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } })
            }).catch(() => { })
          }
          resolve(res)
          // getInfo().then(res => {
          //   const user = res.user
          //   let avatar = user.avatar || ""
          //   if (!isHttp(avatar)) {
          //     avatar = (isEmpty(avatar)) ? defAva : import.meta.env.VITE_APP_BASE_API + avatar
          //   }
          //   if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
          //     this.roles = res.roles
          //     this.permissions = res.permissions
          //   } else {
          //     this.roles = ['ROLE_DEFAULT']
          //   }
          //   this.id = user.userId
          //   this.name = user.userName
          //   this.nickName = user.nickName
          //   this.avatar = avatar
          //   /* 初始密码提示 */
          //   if (res.isDefaultModifyPwd) {
          //     ElMessageBox.confirm('您的密码还是初始密码，请修改密码！', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => {
          //       router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } })
          //     }).catch(() => { })
          //   }
          //   /* 过期密码提示 */
          //   if (!res.isDefaultModifyPwd && res.isPasswordExpired) {
          //     ElMessageBox.confirm('您的密码已过期，请尽快修改密码！', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => {
          //       router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } })
          //     }).catch(() => { })
          //   }
          //   resolve(res)
          // }).catch(error => {
          //   reject(error)
          // })
        })
      },
      // 退出系统
      logOut() {
        return new Promise((resolve, reject) => {
          this.token = ''
          this.roles = []
          this.permissions = []
          removeToken()
          resolve()
          // logout(this.token).then(() => {
          //   this.token = ''
          //   this.roles = []
          //   this.permissions = []
          //   removeToken()
          //   resolve()
          // }).catch(error => {
          //   reject(error)
          // })
        })
      }
    }
  })

export default useUserStore
